#pragma once
#ifndef OBR_CUDAPROGRAM_H
#define OBR_CUDAPROGRAM_H

#include "common.h"
#include "helpers/Helpers.h"


namespace OBR
{
class CudaProgram
{
private:
    size_t program_id;

public:
    static std::vector<OptixProgramGroup> all_program_groups;
    OptixProgramGroup program_group;

    CudaProgram(OptixDeviceContext &ctx, OptixPipelineCompileOptions &pipeline_compile_options,
                OptixProgramGroupOptions &prog_group_options,
                OptixProgramGroupDesc &prog_group_desc);
    ~CudaProgram();
};

} // namespace OBR

#endif
